# -*- coding:utf8 -*-
# __author__ = "zhangying"
# __date__ = "2019/2/28 14:21"
'''
excel关键字模型
Python语言中，读取Excel的扩展工具。
(意为:xls文件read库，只能读。xlrd
若写入，要用xlwt，意为:xls文件write写入库。data = xlrd.open_workbook('excelFile.xls'))
可以实现指定表单、指定单元格的读取。
使用时请确保已经安装python环境。
举例：https://baike.baidu.com/item/xlrd/15914187?fr=aladdin
以0开始
案例：
import xlrd
excel = xlrd.open_workbook('D:/PythonAppium/config/case.xls')  打开excel文件
data = excel.sheets()[0]   获取sheets的数据，第0个
print(data.nrows)   获取excel文件内容的行数
print(data.cell(5,5).value)  获取excel文件内容的单元格信息为第五行，第五列，行列以0开始
'''
#操作excel
import xlrd
from xlutils.copy import copy
import xlwt
#xlwd 执行文件写入


class OperaExcel:
    def __init__(self,file_path=None,i=None):
        """
        构造函数
        一：获取文件路径 get_excel()
        二：获取第几个sheets,例：一般是第0个开始 get_sheets()
        三：获取excel文件中第一个sheets中有几行  get_lines()
        四：获取单元格的信息 get_cell()
        五：执行main函数


        :param file_path: 文件路径
        :param i: 第几个sheet
        """
        if file_path == None:
            self.file_path = 'D:/PythonAppium/config/case.xls'
        else:
            self.file_path = file_path
        if i == None:
            i = 0
        self.excel = self.get_excel()
        self.data = self.get_sheets(i)

    def get_excel(self):
        '''
        获取excel
        '''
        excel = xlrd.open_workbook(self.file_path,)
        return excel

    def get_sheets(self, i):
        '''
        获取sheets的内容
        '''
        tables = self.excel.sheets()[i]
        return tables

    def get_lines(self):
        '''
        获取excel行数
        '''
        lines = self.data.nrows
        return lines

    def get_cell(self,row,cell):
        '''
        获取单元格内容
        '''
        data = self.data.cell(row,cell).value
        return data

    def write_value(self,row,value):
        read_value = self.excel
        write_data = copy(read_value)
        write_save = write_data.get_sheet(0)
        write_save.write(row,8,value)
        write_data.save(self.file_path,)


if __name__ == '__main__':
    opera = OperaExcel()
    print(opera.write_value(6,'pass'))